/**
* \file Partie.h
* \brief Prototypes des methodes de la classe Partie
* \author FEKI Mehdi && RIPOCHE Emilien
* \version 1.0
* \date 04/12/2011
*/

#pragma once

#include <vector>
#include <iostream>
#include "Joueur.h"
#include "Plateau.h"

using namespace std;

/**
 * \class Classe Partie
 * \brief Classe representant une partie
 */
class __declspec( dllexport ) Partie {
private :
	vector<Joueur*> _joueurs;	/*!< Joueurs */

public :
	/**
	* \fn Partie()
	* \brief Constructeur par defaut de la classe Partie
	*/
	Partie();

	/**
	* \fn Joueur* getJoueur(unsigned int) const
	* \brief Recupere un joueur
	* \param Indice du joueur dans la liste
	* \return Le joueur a l'indice donne, NULL si l'indice est mauvais
	*/
	Joueur* getJoueur(unsigned int) const;
	
	/**
	* \fn unsigned int getNbJoueurs() const
	* \brief onne le nombre de joueurs
	* \return Le nombre de joueurs
	*/
	unsigned int getNbJoueurs() const {	return _joueurs.size(); };

	/**
	* \fn void ajoutJoueur(Joueur* j)
	* \brief Ajoute un joueur a la partie
	* \param j Le joueur a ajouter a la partie
	*/
	void ajoutJoueur(Joueur* j);

	/**
	* \fn void ajoutJoueur(Joueur* j, int pos)
	* \brief Ajoute un joueur a une position donnee
	* \param j Le joueur a ajouter a la partie
	* \param pos La position du joueur
	*/
	void ajoutJoueur(Joueur* j, int pos);

	/**
	* \fn vector<Joueur*> getJoueurs() 
	* \return Un vecteur contenant tous les joueurs de la partie
	*/
	vector<Joueur*> getJoueurs();

	Flotte* getFlotte(int x, int y);

	int getRangJoueur(Flotte::CouleurFlotte cf);

};